AWS再入門 Amazon RDS編
はじめに
当エントリはDevelopers.IOで弊社AWSチームによる2015年アドベントカレンダー 『AWS サービス別 再入門アドベントカレンダー 2015』の7日目のエントリです。 昨日6日目のエントリは梶の『AWS WAF』でした。 このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
本日7日目のテーマは『Amazon RDS』です。
2015/12/09 19:00 Auroraで暗号化がサポートされましたので一部修正しました。Auroraの暗号化の詳細については、『[新機能] RDS for Auroraで暗号化がサポートされました』を参照ください。
目次
- Amazon RDSとは?
- 完全マネージド型のリレーショナル・データベースサービス
- 様々なDBエンジンを使用可能
- 性能向上が簡単に実施可能
- Amazon RDSの基本構成
- 通常のDBエンジン(Aurora以外)
- Aurora
- サービス利用のユースケース
- 高度なスケーラブルが求められる場合
- 管理者権限でDBにログインする必要がある場合
- OSにログインする必要がある場合
- RDBMSの特定の機能を使用する場合
- Let's Try
- DBサブネットグループの作成
- パラメータグループの作成
- インスタンスの起動
- DBへ接続
- 追加のオプション
- あわせて読みたい
- さいごに
Amazon RDSとは?
Amazon RDSとは、"Amazon Relational Database Service"という名の通り、リレーショナルデータベースを提供するサービスです。どんな特徴があるのは、ご紹介していきましょう。
完全マネージド型のリレーショナル・データベースサービス
AWS Black Belt Tech Webinar 2015の資料によると Amazon RDSは『完全マネージド型で、セットアップ、運用、拡張が容易なリレーショナル・データベースサービス』と書かれています。完全マネージドであり運用が容易ということです。
代表的なDBの作業として、データベースの作成、冗長化、バックアップ、パッチ適用等があると思いますが、RDSの場合は以下の通り簡単な作業になります。
データベース作成
数クリックでDBを作成できます。DBエンジン、インスタンスクラス、ディスクの種類やサイズ等を選択するだけです。
冗長化
ワンクリックでマルチAZと呼ばれるデータセンタ間で冗長化された冗長構成を構築できます。常時同期レプリケーションされており、障害発生時には自動でフェイルオーバーされます。手動による強制フェイルオーバーも可能です。
バックアップ
スナップショットを日次で自動取得して、5分ごとにトランザクションログを保存しています。リストアはスナップショットからDBインスタンスを作成したり、Point-In-Time-Recovery(PITR)により指定した時刻の状態でDBインスタンスを作成したりできます。手動による任意のタイミングでバックアップすることも可能です。
パッチ適用
データベースの脆弱性などでパッチ適用が必要な場合は、自動で適用を行います。メンテナンスウィンドウを設定しておくことで、パッチの適用タイミングを指定できます。マルチAZ構成にしてあるとローリングアップデートを行うので、サービス停止時間が短くなります。
オンプレミス、データベース on EC2(EC2にデータベースを独自にインストール)、RDSで必要な作業を比較すると、以下の表となります。RDSでは、データベースの作業のほとんどがマネージドとなっています。
実施作業 | オンプレミス | データベース on EC2 | RDS |
---|---|---|---|
アプリ最適化 | ユーザ | ユーザ | ユーザ |
スケーリング | ユーザ | ユーザ | AWS |
高可用性 | ユーザ | ユーザ | AWS |
DBバックアップ | ユーザ | ユーザ | AWS |
DBパッチ適用 | ユーザ | ユーザ | AWS |
DBインストール | ユーザ | ユーザ | AWS |
OSパッチ適用 | ユーザ | ユーザ | AWS |
OSインストール | ユーザ | AWS | AWS |
サーバーメンテナンス | ユーザ | AWS | AWS |
ラック管理 | ユーザ | AWS | AWS |
電源、空調、ネットワーク | ユーザ | AWS | AWS |
様々なDBエンジンを使用可能
DB-Enginesでは毎月人気のあるデータベースについてランキングを作成していますが、2015年12月時点で人気のあるデータベースの上位5位は、以下となっています。
順位 | DBMS | データベースモデル | スコア |
---|---|---|---|
1 | Oracle | RDBMS | 1497.55 |
2 | MySQL | RDBMS | 1298.54 |
3 | Microsoft SQL Server | RDBMS | 1123.16 |
4 | MongoDB | ドキュメント指向DB | 301.39 |
5 | PostgreSQL | RDBMS | 280.09 |
上記の中のRDBMS全てに加えて、クラウド時代に合わせて再設計したAurora、MySQLのフォークであるMariaDBが使用できます。
- MySQL:最もシェアがあるOSSのRDBMS。
- Oracle:高いシェアがある商用RDBMS。
- SQL Server:高いシェアがある商用RDBMS。Windowsとの親和性が高い。
- PostgreSQL:機能が豊富なOSSのRDBMS。
- Aurora:AWSがクラウド時代に再設計したRDBMS。MySQL 5.6互換でMySQLの5倍高速と言われています。
- MariaDB:MySQLからフォークしたRDBMS。MySQL互換。
性能向上が簡単に実施可能
Amazon RDSでは、様々なスペックのインスタンスを使用できます。最大40個のvCPUのインスタンスや244GBのメモリのインスタンスがあります。性能が不足してきたら、インスタンスのサイズを変更することも可能です。 ストレージも変更することで性能向上を図ることも可能です。磁気HDDの「Magnetic ストレージ」、SSDを採用した「汎用(SSD)ストレージ」、SSDを採用し高速なI/Oを指定できる「プロビジョンド IOPS(SSD)ストレージ」の3種類1を利用することが可能です。 さらには、読み取り専用のインスタンスであるリードレプリカを追加2することで、読み取りのスケールアウトも可能です。
Amazon RDSの基本構成
Amazon RDSの基本機能を紹介します。通常のDBエンジンとAuroraでは考え方が異なるため別々に解説します。
通常のDBエンジン(Aurora以外)
DBインスタンス
DBサーバ1台ごとをDBインスタンスを言います。後述のマルチAZデプロイメントをしている場合は、アクティブ機、スタンバイ機を合せて1つDBインスタンスと捉えます。
マスタ
DBの基本となる部分です。読み書きを行える通常のインスタンスです。マスタに対してリードレプリカやマルチAZ構成を設定することができます。
マルチAZデプロイメント
AZをまたがったアクティブ-スタンバイ構成を指します。常に同期レプリケーションされていて、障害が発生した時にはスタンバイ機へフェイルオーバーします。 フェイルオーバーはDNSの名前の付け替えにより行われます。そのため、接続先のIPアドレスをキャッシュし続けるとアプリケーション側でフェイルオーバー先に接続できない自体が発生するので、注意が必要です。
リードレプリカ
一部のDBエンジン(MySQL、PostgreSQL、MariaDB)では、読み取り専用データベースのリードレプリカを構成できます。リードレプリカにより読み取り処理をスケールアウトできるようになります。MySQL、MariaDBの場合が、リージョンを超えてレプリカを構成することもできます。 Oracleの場合はGoldenGateを使用するとレプリカを構成することができます。
Aurora
AuroraはAWSのプラットフォームを前提とした、クラウド時代にRDBMSを再設計したDBエンジンでエンタープライズレベルの可用性とOSSレベルのコストを両立しています。 大きな特徴として、以下の内容があります。
- MySQL 5.6互換であるため、既存アプリケーションを簡単に移行できます。
- ストレージが10GBから64TBまでシームレスに、ダウンタイム無しで自動拡張します。
- データは、3AZに2つずつ、合計6重化されて保存されます。
- 99.99%の可用性3を実現するように設計されています。
DBクラスタ
他のDBエンジンと異なり、AuroraにはDBクラスタという概念があります。マスタ(Writer)、リードレプリカ(Reader)、ストレージ等のまとまった単位としてDBクラスタを捉えればいいでしょう。個人的には1つのAuroraのストレージを共有するまとまりと考えています。
ストレージレイヤー
AuroraのストレージはDBクラスタの全DBインスタンスで共有しており、3AZにまたがり6重化されて保存されています。
DBインスタンス
通常のRDSと同様に、DBサーバ1台ごとをDBインスタンスを言います。
マスタ(Writer)
DBクラスタ内のインスタンスの中で書き込みを行えるインスタンスをマスタ(Writer)と呼びます。マスタにはDBインスタンス個別のエンドポイントと、クラスタ全体での書き込み用エンドポイント(クラスタエンドポイント)の両方が設定されます。
マルチAZデプロイメント
AuroraにはマルチAZデプロイメントという構成はありません。ストレージレイヤーで3AZにまたがって保存されます。
リードレプリカ(Reader)
DBクラスタ内のインスタンスの中で読み取り用のインスタンスをリードレプリカ(Reader)と呼びます。
障害時のフェイルオーバー
マスタ(Writer)に障害が発生してフェイルオーバーする時には、他のリードレプリカ(Reader)がマスタ(Writer)に昇格します。昇格に伴い、クラスタエンドポイントが切り替わり、innodb_read_only変数とmysql.ro_replica_statusテーブルの内容が更新されます。 MariaDB Connector/Jを使用するとクラスタエンドポイントのTTLを気にせず、innodb_read_only変数とmysql.ro_replica_statusテーブルの内容のみでマスタ(Writer)を判断して更新クエリを発行するので、高速にフェイルオーバーすることができます。詳しくは、以下の記事を参照して下さい。
MariaDB Connector/JによるAmazon RDS for Auroraの高速フェイルオーバー
Auroraの詳細については、以下の資料を参照すると理解が進みます。
サービス利用のユースケース
Amazon RDSのユースケースは『RDBMSを使用する場合のほとんど』となります。しかし、いくつかのパターンではRDSを利用しづらい場合があります。
- 高度なスケーラブルが求められる場合
- 管理者権限でDBにログインする必要がある場合
- OSにログインする必要がある場合
- RDBMSの特定の機能を使用する場合
高度なスケーラブルが求められる場合
RDSでは性能向上の手段として、インスタンスのスケープアップやリードレプリカの追加によるスケールアップがありますが、それでも対応できない高度なスケーラブルな性能を求められる場合があります。その場合は、RDBMS以外の選択肢としてNoSQLの採用を検討する必要があります。 ただし、むやみにNoSQLを採用してはいけません。必ず『本当にNoSQLを使う必要があるのか?』を考えてからNoSQLを採用して下さい。以下の資料を参考に、本当に必要なのか判断してください。
判断した結果NoSQLを使用するべきであれば、完全マネージド型のNoSQL『DynamoDB』をお勧めします。詳細については、以下のシリーズの記事を参照下さい。
コンセプトから学ぶAmazon DynamoDB – シリーズ –
管理者権限でDBにログインする必要がある場合
Amazon RDSでは、DBに対して管理者権限ではログインできません。そのため管理者権限を使用した操作が必須である場合は、その操作を回避するかRDSの採用をやめる必要があります。 ただし、本来は管理者権限でしか実行できない操作をストアドプロシージャやAWSCLIで使用できる場合があります。MySQLの場合、CHANGE MASTER、KILL等がSUPER権限でしか実行できません。しかし、CHANGE MASTERであればmysql.rds_set_external_masterプロシージャ、KILLであればmysql.rds_killプロシージャやmysql.rds_kill_queryプロシージャで同等の操作が可能です。 管理者権限が必要な場合は、代替コマンドが用意されているか確認しましょう。以下のリンクを参考にして下さい。
- 付録: MySQL に関連する一般的な DBA タスク
- 付録: Oracle の一般的な DBA タスク
- 付録: SQL Server に関連する一般的な DBA タスク
- 付録: PostgreSQL の一般的な DBA タスク
- Amazon Aurora を使用する際のベストプラクティス
- 付録: Amazon RDS SQL リファレンスでの MariaDB
OSにログインする必要がある場合
Amazon RDSは、DBインスタンスのOSにログインすることができません。そのため、DBのローカル環境でコマンドを実行する必要がある場合や、RDBMSとアプリが同一サーバであることを前提としたプログラムでは、RDSの使用をやめてデータベース on EC2を検討する必要があります。
RDBMSの特定の機能を使用する場合
Amazon RDSは完全マネージドとするために、一部の機能を制限しています。そのため制限されている機能を使用するためには、データベース on EC2を検討する必要があります。 サポートされていないものとして、以下のような機能の制限があります。
MySQL
特定のストレージエンジンしかサポートされていません。PITRやスナップショットからの復元はInnoDBのみサポートされています。MyISAMの場合はデータが紛失または破損する可能性があります。また、Federated ストレージエンジンはサポートされていません。
MySQLでサポートされていない機能として、以下のものがあります。詳細はドキュメントを参照してください。
- グローバルトランザクション ID
- トランスポータブルテーブルスペース
- 認証用プラグイン
- パスワード強度用プラグイン
- 準同期レプリケーション
Oracle
Oracle 12cでサポートされていない機能として、以下のものがあります。
- Real Application Clusters(RAC)
- Data Guard/Active Data Guard
- Cloud Control(Oracle の以前のバージョンでは Oracle Enterprise Manager Grid Control)
- Automated Storage Management
- Database Vault
- Java のサポート
- Locator
- Spatial
Oracle 11gでサポートされていない機能として、以下のものがあります。
- Real Application Clusters (RAC)
- Real Application Testing
- Data Guard/Active Data Guard
- Oracle Enterprise Manager Grid Control
- Automated Storage Management
- Database Vault
- Streams
- Java のサポート
- Locator
- Spatial
- Oracle XML DB Protocol Server
- utl_http、utl_tcp、utl_smtp、utl_mail などのネットワークアクセスユーティリティは、現時点ではサポートされていません。
詳細は、ドキュメントを参照してください。
SQL Server
SQL Serverでサポートされていない機能として、以下のものがあります。詳細は、ドキュメントを参照してください。
- メンテナンスプラン
- データベースメール
- 分散クエリ(あるいは、リンクサーバー)
- Service Broker
- データベースのログ配布
- Windows 認証
- 変更データキャプチャ(CDC)- CDC の代わりに変更の追跡を使用することを検討してください。
- レプリケーション
- DB インスタンスと同じサーバーでレポート、分析、統合、またはマスターデータサービスを実行する機能。これを行う必要がある場合は、EC2 インスタンスに SQL Server をインストールするか、レポート、統合、分析、またはマスターデータサービスを実行するサーバーとしてオンプレミスの SQL Server インスタンスを使用することをお勧めします。
- パフォーマンスデータコレクター
- 追加の T-SQL エンドポイント
- 分散トランザクションコーディネーター(MSDTC)
- WCF Data Services
- FILESTREAM のサポート
- ポリシーベースの管理
- SQL Server Audit
- BULK INSERT および OPENROWSET(BULK...) 機能。
- Data Quality Services
- ファイルの瞬時の初期化
- Always On(2012 エンタープライズエディション)
- ファイルテーブル
- サーバーレベルのトリガー
PostgreSQL
PostgreSQLは、他のDBエンジンと比べて制限が少ない様です。PostgreSQLで使用できる拡張機能は、DBパラメータグループの"rds.extensions"の内容となります。2015年12月6日現在では、以下の39個がサポートされています。
拡張機能 | PostgreSQL 9.3 | PostgreSQL 9.4 |
---|---|---|
btree_gin | ○ | ○ |
btree_gist | ○ | ○ |
chkpass | ○ | ○ |
citext | ○ | ○ |
cube | ○ | ○ |
dblink | ○ | ○ |
dict_int | ○ | ○ |
dict_xsyn | ○ | ○ |
earthdistance | ○ | ○ |
fuzzystrmatch | ○ | ○ |
hstore | ○ | ○ |
intagg | ○ | ○ |
intarray | ○ | ○ |
ip4r | × | ○ |
isn | ○ | ○ |
ltree | ○ | ○ |
pgcrypto | ○ | ○ |
pgrowlocks | ○ | ○ |
pgstattuple | × | ○ |
pg_buffercache | × | ○ |
pg_prewarm | × | ○ |
pg_stat_statements | ○ | ○ |
pg_trgm | ○ | ○ |
plcoffee | ○ | ○ |
plls | ○ | ○ |
plperl | ○ | ○ |
plpgsql | ○ | ○ |
pltcl | ○ | ○ |
plv8 | ○ | ○ |
postgis | ○ | ○ |
postgis_tiger_geocoder | ○ | ○ |
postgis_topology | ○ | ○ |
postgres_fdw | ○ | ○ |
sslinfo | ○ | ○ |
tablefunc | ○ | ○ |
test_parser | ○ | ○ |
tsearch2 | ○ | ○ |
unaccent | ○ | ○ |
uuid-ossp | ○ | ○ |
Aurora
Auroraは、RDS for MySQLと比較して、以下のような制限があります。ドキュメントで明示的に記載されていない項目もあるため、他にも制限があるかもしれません。
- ストレージエンジンはInnoDBしかサポートしていない
- memcachedプロトコルが使用できない
- 適応型ハッシュインデックス(Adaptive Hash Index)が使用できない
MariaDB
特定のストレージエンジンしかサポートされていません。PITRやスナップショットからの復元はXtraDBのみサポートされています。Ariaの場合はデータが紛失または破損する可能性があります。他のストレージエンジンはサポートされていません。
MySQLでサポートされていない機能として、以下のものがあります。詳細はドキュメントを参照してください。
- MariaDB Galera クラスター
- HandlerSocket
- マルチソースレプリケーション
- 「Engine-defined New Table/Field/Index Attributes」で説明されている、ストレージのエンジン固有のオブジェクト属性。
Let's Try
RDSを構築する手順を確認してみましょう。 RDSを構築する場合は、以下の手順が必要です。
- DBサブネットグループの作成
- パラメータグループの作成
- インスタンスの起動
- DBへ接続
- 追加のオプション
DBサブネットグループの作成
RDSを構築する前に、VPCごとにDB サブネットグループというものが必要4になります。デフォルトVPCの場合は、標準で用意されています。 DBサブネットグループはRDSインスタンスを起動するサブネットをグループ化するものです。マルチAZ構成でフェイルオーバーする場合は、DBサブネットグループで指定した他のAZに移ります5。
東京リージョンに下図のようなVPCとサブネットがあることを前提とします。その中でPrivate-subnet-AとPrivate-subnet-CをDBサブネットグループとして設定します。
マネージメントコンソールで、RDSの[サブネットグループ]を表示します。そこで[DB サブネットグループの作成]をクリックします。
以下の項目を設定し[作成]をクリックします。
項目 | 内容 |
---|---|
名前 | DBサブネットグループの名前です。 |
説明 | 説明を記載できます。 |
VPC ID | 作成するVPC IDを入力します。 |
サブネット ID | アベイラビリティーゾーンを指定して対象のサブネット IDを[追加]します。 |
パラメータグループの作成
次にパラメータグループを作成します。パラメータグループは各DBのバージョンごとに作成します。 パラメータグループは、DBの設定内容をまとめたものです。MySQLにとってのmy.cnfのようなものです。my.cnfとは設定できる項目が一部異なります。
パラメータグループを作成するには、RDSの[パラメータグループ]で[パラメータグループの作成]をクリックします。
パラメータグループファミリー、グループ名、説明を記述して[作成]をクリックします。パラメータグループファミリーに[aurora5.6]を選択すると[タイプ]として[DB Parameter Group]と[DB Cluster Parameter Group]を選択する必要があります。 パラメータグループファミリーはDBエンジン(ライセンス別)とバージョンごとに別の物を指定します。2015年12月6日現在で指定できるファミリーは以下の表の通りです。
DBエンジン | パラメータグループファミリー |
---|---|
MySQL | mysql5.1, mysql5.5, mysql5.6 |
Oracle | oracle-ee-11.2, oracle-ee-12.1, oracle-se-11.2, oracle-se-12.1, oracle-se1-11.2, oracle-se1-12.1 |
SQL Server | sqlserver-ee-10.5, sqlserver-ee-11.0, sqlserver-ex-10.5, sqlserver-ex-11.0, sqlserver-ex-12.0, sqlserver-se-10.5, sqlserver-se-11.0, sqlserver-se-12.0, sqlserver-web-10.5, sqlserver-web-11.0, sqlserver-web-12.0 |
PostgreSQL | postgres9.3, postgres9.4 |
Aurora | aurora5.6 |
MariaDB | mariadb10.0 |
インスタンスの起動
RDSインスタンスを作成するには、RDSの[インスタンス]で[DB インスタンスの起動]をクリックします。
ステップ 1:エンジンの選択
作成するRDSのDBエンジンを選択します。作成するDBエンジンを選び[選択]をクリックします。 DBエンジンごとに選択できるエディションが以下のように分かれています。
DBエンジン | 選択できるエディション |
---|---|
Aurora | Aurora |
MariaDB | MariaDB |
MySQL | MySQL |
PostgreSQL | PostgreSQL |
Oracle | Oracle EE, Oracle SE, Oracle SE One |
SQL Server | SQL Server Express, SQL Server Web, SQL Server SE,SQL Server EE |
ステップ 2:本番稼働用?
一部のDBエンジンでは、本番稼働用か質問があります。次のステップでのデフォルト値が変化するだけなので、どちらを選択しても構いません。 [はい]を選択すると、大きめのインスタンスクラス、マルチAZ、プロビジョンドIOPS ストレージがデフォルトになります。
ステップ 3:DB 詳細の指定
DBの詳細を指定します。
項目 | 内容 |
---|---|
ライセンスモデル | DBのライセンスを選択します。DBエンジンごとに選択できる内容が異なります。選択肢としては「General Public License」、「自分のライセンスを使用」、「ライセンス込み」、「postgresql-license」があります。 |
DB エンジンのバージョン | 起動したいDBのバージョンを指定します。 |
DB インスタンスのクラス | 起動するDBインスタンスのスペックを指定します。DBエンジン、ライセンスモデルによってせんたくできるクラスが異なります。各クラスの詳細は、こちらを参照してください。 |
マルチ AZ 配置 | 高可用性な構成であるマルチAZにするか選択できます。マルチAZが指定できないリージョン、DBエンジンによっては表示されません。 |
ストレージタイプ | ストレージを「汎用(SSD)」、「プロビジョンド IOPS(SSD)」、「マグネティック」から選択できます。通常は「汎用(SSD)」を選択することをお勧めします。 |
ストレージ割り当て | 必要なストレージのサイズを指定します。SQL Server以外は後でサイズを増やせるため、大きな余裕は必要ありません。 |
DB インスタンス識別子 | DBインスタンスのIDを指定します |
マスターユーザの名前 | 初期のログインユーザの名前を指定します。 |
マスターパスワード | ログインユーザのパスワードを指定します。 |
パスワードの確認 | パスワードの確認をします。[マスターパスワード]と同じ内容を入力して下さい。 |
Auroraの場合は、入力内容が異なり、DB インスタンスのクラス、マルチ AZ 配置、DB インスタンス識別子、マスターユーザの名前、マスターパスワード、パスワードの確認の6項目となります。
ステップ 4:[詳細設定] の設定
詳細設定はDBエンジンごとに設定する項目が異なります。各DBエンジンでの項目の有無と設定内容についてまとめます。
ネットワーク & セキュリティ
項目 | MySQL | Oracle | SQL Server | PostgreSQL | Aurora | MariaDB | 設定内容 |
---|---|---|---|---|---|---|---|
VPC | ○ | ○ | ○ | ○ | ○ | ○ | RDSを配置するVPCを選択します。 |
サブネットグループ | ○ | ○ | ○ | ○ | ○ | ○ | 事前に作成したDBサブネットグループを選択します。 |
パブリックアクセス可能 | ○ | ○ | ○ | ○ | ○ | ○ | インターネットから直接アクセス可能か選択します。[はい]を選択するとPublic IPとパブリックなDNSが設定されます。 |
アベイラビリティーゾーン | ○ | ○ | ○ | ○ | ○ | ○ | RDSインスタンスを配置するAZを指定します。 |
VPC セキュリティグループ | ○ | ○ | ○ | ○ | ○ | ○ | RDSインスタンスに設定するセキュリティグループを選択します。 |
データベースの設定
項目|MySQL|Oracle|SQL Server|PostgreSQL|Aurora|MariaDB|設定内容 ---|:---:|:---:|:---:|:---:|:---:|:---:|--- DB クラスター識別子|×|×|×|×|○|×|AuroraのDBクラスタのIDを指定します。 データベースの名前|○|○|×|○|○|○|初期設定のデータベース(DBによってはスキーマ)の名称を指定します。 データベースのポート|○|○|○|○|○|○|ネットワークで接続するポート番号を指定します。 DB パラメータグループ|○|○|○|○|○|○|事前に作成したパラメータグループを指定します。 DB クラスターのパラメータグループ|×|×|×|×|○|×|Auroraのクラスタ全体に設定するパラメータグループを指定します。 オプショングループ|○|○|○|△ (項目はあるが指定できない)|△ (項目はあるが指定できない)|△ (項目はあるが指定できない)|オプショングループを指定します。一部のDBエンジンでは追加機能が使用できるようになります。 タグをスナップショットへコピー|○|○|○|○|×|○|スナップショット作成時にタグを引き継ぐかを指定します。 キャラクタセット名|×|○|×|×|×|×|Oracleのキャラクタセットを指定します。 暗号を有効化|○|○|○|○|○|○|ストレージの暗号化を設定するか指定します。 マスターキー ([暗号を有効化]で[はい]を指定した時に表示される)|○|○|○|○|○|○|暗号化するときの暗号キーを指定します。
バックアップ
項目|MySQL|Oracle|SQL Server|PostgreSQL|Aurora|MariaDB|設定内容 ---|:---:|:---:|:---:|:---:|:---:|:---:|--- バックアップの保存期間|○|○|○|○|○|○|バックアップの保存期間を指定します。1〜35日で指定可能です。無効にする場合は0日を指定します6。 バックアップウィンドウ ([ウィンドウの選択]を選択すると、開始時刻、期間を指定できます)|○|○|○|○|×7|○|バックアップを行う時間帯を指定します。
メンテナンス
項目|MySQL|Oracle|SQL Server|PostgreSQL|Aurora|MariaDB|設定内容 ---|:---:|:---:|:---:|:---:|:---:|:---:|--- マイナーバージョン自動アップグレード|○|○|○|○|○|○|マイナーバージョンへ自動でアップグレードするか指定できます。 メンテナンスウィンドウ ([ウィンドウの選択]を選択すると、開始日、開始時刻、期間を指定できます)|○|○|○|○|○|○|メンテナンスを行う時間帯を指定します。
DBへ接続
実際にRDSへログインしてみます。 ますは、マネージメントコンソールで、インスタンスのエンドポイントを確認します。
MySQL
VPC内のAmazon LinuxからMySQLへログインしてみます。
まずmysqlコマンドをインストールします。
$ sudo yum install -y mysql 読み込んだプラグイン:priorities, update-motd, upgrade-helper 依存性の解決をしています ・ ・ ・ 依存性関連をインストールしました: mysql-config.x86_64 0:5.5.46-1.10.amzn1 mysql55.x86_64 0:5.5.46-1.10.amzn1 mysql55-libs.x86_64 0:5.5.46-1.10.amzn1 完了しました!
実際にログインします。
$ mysql -u awsuser -pmypassword -h mysqlinstance.abcdefghijkl.ap-northeast-1.rds.amazonaws.com mydb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 55 Server version: 5.6.23-log MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
普通のMySQLを同様にログインできました。
PostgreSQL
VPC内のAmazon LinuxからPostgreSQLへログインしてみます。
まずpsqlコマンドをインストールします。
$ sudo yum install postgresql 読み込んだプラグイン:priorities, update-motd, upgrade-helper 依存性の解決をしています ・ ・ ・ 依存性関連をインストールしました: postgresql92-libs.x86_64 0:9.2.14-1.56.amzn1 完了しました!
実際にログインします。
$ psql -U awsuser -h postgresql01.abcdefghijkl.ap-northeast-1.rds.amazonaws.com -d mydb ユーザ awsuser のパスワード: psql (9.2.14, サーバー 9.4.4) 注意: psql バージョン 9.2, サーバーバージョン 9.4. psql の機能の中で、動作しないものがあるかもしれません。 SSL 接続 (暗号化方式: ECDHE-RSA-AES256-GCM-SHA384, ビット長: 256) "help" でヘルプを表示します. mydb=>
普通のPostgreSQLを同様にログインできました。
Oracle
VPC内のAmazon LinuxからOracleへログインしてみます。
まずsqlplusコマンドをインストールします。Oracle本家のサイト Instant Client Downloads for Linux x86-64 から、"oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm"と"oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm"をダウンロードします。ダウンロード時にログインする必要があるので、Oracleプロファイルを持っていない場合はプロファイルを作成して下さい。 ダウンロードしたファイルをAmazon Linuxにアップロードして、以下のようにインストールします。
$ sudo rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm 準備しています... ################################# [100%] 更新中 / インストール中... 1:oracle-instantclient12.1-basic-12################################# [100%] $ sudo rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm 準備しています... ################################# [100%] 更新中 / インストール中... 1:oracle-instantclient12.1-sqlplus-################################# [100%]
実際にログインします。
$ export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH $ sqlplus64 awsuser/mypassword@oracleinstance.abcdefghijkl.ap-northeast-1.rds.amazonaws.com:1521/ORCL SQL*Plus: Release 12.1.0.2.0 Production on Sun Dec 6 18:08:39 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Release 12.1.0.1.0 - 64bit Production SQL>
普通のOracleを同様にログインできました。
SQL Server
VPC内のWindows ServerからSQL Serverへログインしてみます。
Microsoftのダウンロード センター Microsoft® SQL Server® 2014 Expressから"MgmtStudio 64BIT\SQLManagementStudio_x64_JPN.exe"をダウンロードして インストールします。 [SQL Server の新規スタンドアロン インストールを実行するか、既存のインストールに機能を追加します]をクリックします。
チェックボックスにチェックをして[次へ]をクリックします。
[Microsoft Uodateを 使用して更新プログラムを確認する]にチェックをして、[次へ]をクリックします。
ここでは、デフォルト状態ですべての機能が選択されており、Cドライブにインストールされます。問題ない場合は、[次へ]をクリックします。
機能ルールの画面で1件失敗してしまいました。 サーバー マネージャーの[役割と機能の追加]から「.NET Framework 3.5 Features」をインストールします。「.NET Framework 3.5 Features」をインストールした後に、[再実行]をクリックしてインストールを勧めます。
SQL Server 2014 Management Studioのインストールが完了しました。
SQL Server 2014 Management Studioを起動します。 サーバー名にエンドポイント、認証は「SQL Server 認証」を設定します。ログインとパスワードを入力して[接続]をクリックします。
通常のSQL Serverと同様にログインできました。
Aurora
Auroraにはクラスタエンドポイントと普通のDBインスタンスのエンドポイントがあります。
MySQLの場合と同様に、mysqlコマンドをインストールします。
クラスタエンドポイントでログインします。クラスタエンドポイントは、『[クラスタ名].cluster-[アカウント固有値].[リージョン].rds.amazonaws.com』の形式になっています。
$ mysql -u awsuser -pmypassword -h mycluster.cluster-abcdefghijkl.ap-northeast-1.rds.amazonaws.com mydb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
DBインスタンスのエンドポイントでもログインしてみましょう
$ mysql -u awsuser -pmypassword -h aurorainstance.abcdefghijkl.ap-northeast-1.rds.amazonaws.com mydb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
普通のMySQLの様にログインできました。
MariaDB
MySQLの場合と同様に、mysqlコマンドをインストールします。
実際にログインします。
$ mysql -u awsuser -pmypassword -h mariadbinstance.abcdefghijkl.ap-northeast-1.rds.amazonaws.com mydb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 62 Server version: 5.5.5-10.0.17-MariaDB-log MariaDB Server Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
普通のMariaDBを同様にログインできました。
追加のオプション
一部のDBエンジンでは、オプショングループを設定することで追加機能を使用することができます。
MySQL
オプショングループの設定により、memcachedプロトコルでの接続が可能になります。MySQL 5.6以降で使用可能です。
Oracle
エディションにより、設定できるオプションが異なります。
オプション | Oracle EE | Oracle SE | Oracle SE1 | 備考 |
---|---|---|---|---|
APEX | ○ | ○ | ○ | Oracle Application Expressを使用できます。 |
APEX-DEV | ○ | ○ | ○ | Oracle Application Expressを使用できます。 |
NATIVE_NETWORK_ENCRYPTION | ○ | × | × | Oracle Native Network Encryptionを使用できます。これはOracle Advanced Securityオプションの機能です。 |
OEM | ○ | ○ | ○ | Oracle Enterprise Managerを使用できます。 |
STATSPACK | ○ | ○ | ○ | Oracle Statspackのパフォーマンス統計が使用できるようになります。 |
TDE | ○ | × | × | Oracle Transparent Data Encryptionによる透過的な暗号化ができるようになります。このオプションはKMSを使用します。 |
TDE_HSM | ○ | × | × | Oracle Transparent Data Encryptionによる透過的な暗号化ができるようになります。このオプションはCloudHSMを使用します。 |
Timezone | ○ | ○ | ○ | システムのタイムゾーンを変更できます。 |
XMLDB | △ | |||
(11.2のみ) | △ | |||
(11.2のみ) | △ | |||
(11.2のみ) | Oracle XML DBをサポートします。 |
SQL Server
リージョンにより使用可否が変わりますが、Mirroringの設定が可能です。Enterprise Editionの場合、TDE(SQL Serverの透過的な暗号化)を設定できます。
あわせて読みたい
これまででRDSについての機能をご紹介してきましたが、まだまだ説明しきれていません。上記以外でぜひ読んで頂きたい情報を紹介したいと思います。
RDS全般
- Amazon Aurora/MariaDB/MySQLの違いを整理してみる #reinvent
- 既存環境とAWS環境におけるMySQLやPosgresqlのバージョン比較と移行方針
- 【アップデート】RDSのストレージサイズの上限が向上しました
- VPCピアリング越しのRDSエンドポイント接続についての考察
- 【AWS】RDSのインスタンスタイプ変更にかかる時間を調べてみた
MySQL
- 【AWS】MySQL on EC2→RDSのDBレプリケーションを試してみた
- Amazon RDS Cross-Region Read Replicaを試してみた
- RDSを短いダウンタイムでgp2へ移行する方法
Oracle
SQL Server
- SQL Server Enterprise Edition on AWSでライセンスを含むオンデマンド利用の方法
- オンプレのSQL ServerからAWSへレプリケーションをする – 1.基礎知識 –
PostgreSQL
Aurora
MariaDB
さいごに
以上、『AWS サービス別 再入門アドベントカレンダー 2015』の7日目のエントリ『Amazon RDS編』でした。つい大作のエントリを書いてしまいました。RDBのサービスなので触れる機会が多いサービスだと思います。基本を抑えてマネージドなデータベースを活用していくと良いと思います。
明日12/08(火)は能登のAmazon EMR(Elastic MapReduce)です。お楽しみに!
- Auroraでは、特殊なSSDベースの仮想化ストレージレイヤーを採用しています。 ↩
- リードレプリカを作成できるDBエンジンは、MySQL、PostgreSQL、Aurora、MariaDBの4種類です。Oracleの場合はGoldenGateを使用することで、同様の読み取り専用のインスタンスを構築可能です。 ↩
- SLAとしては、他のDBエンジンと同様に99.95%の可用性となっています。 ↩
- EC2-Classic環境ではDBサブネットグループは不要です。しかしEC2-Classic環境は非推奨であり、最近作成したAWSアカウントでは使用できないため、割愛します。 ↩
- Auroraでリードレプリカが同じAZと異なるAZの両方にある場合は、同じAZのリードレプリカへ優先してフェイルオーバーします。 ↩
- Auroraの場合は無効にできません。 ↩
- Auroraの場合は起動時にバックアップウィンドウを指定できないため、起動後に[変更]で設定します。 ↩